package com.cz.mydao.wrapper;

import com.cz.mydao.constant.SqlKey;
import com.cz.mydao.util.MyUtil;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;

/**
 * @descriptions: 修改条件封装类
 * @author: Joker.
 * @date: 2024/12/26 10:28
 * @version: 1.0
 */
@Getter
public class UpdateWrapper extends AbstractWrapper<UpdateWrapper> {

    /**
     * 存储set 修改字段和值
     */
    private final Map<String, Object> updateValues = new HashMap<>();

    /**
     * 设置修改的字段和值
     * @param column  字段
     * @param value 值
     * @return 修改条件
     */
    public UpdateWrapper set(String column, Object value) {
        updateValues.put(column, value);
        return this;
    }

    /**
     * 构建修改sql
     * @param tableName 表名
     * @return sql
     */
    @Override
    public String buildSql(String tableName) {
        StringBuilder sqlBuilder = new StringBuilder(SqlKey.UPDATE + tableName + SqlKey.SET);

        // 拼接 set 子句
        for (Map.Entry<String, Object> entry : updateValues.entrySet()) {
            sqlBuilder.append(entry.getKey())
                    .append(SqlKey.EQUALS)
                    .append(SqlKey.QUESTION_MARK)
                    .append(SqlKey.COMMA);
        }
        // 删除最后的逗号
        sqlBuilder.delete(sqlBuilder.length() - 1, sqlBuilder.length());

        // 拼接 WHERE 条件
        if (!conditions.isEmpty()) {
            // 调用拼接where方法
            MyUtil.buildWhereSql(conditions, sqlBuilder);
        }
        return sqlBuilder.toString();
    }
}